草庐IT

指向类的 C++ 指针

全部标签

c++ - 用指向实例中方法的指针替换参数中的静态函数指针

我使用的第三方库需要将指向静态函数的指针作为回调参数传递。现在我必须做这样的事情:staticintMyCallback(...){//Callbackcodehere...}intmain(intargc,char*argv[]){ThirdPartyFunction(&MyCallback,...);}我想做的是用C++类实例的成员方法替换我必须提供的静态回调函数。像这样:classMyClass{public:intMyCallbackMethod(...);};intmain(intargc,char*argv[]){MyClassinstanceOfMyClass;Third

c++ - 在构造函数中引用此指针

Followingisanotherexampleofforwarddeclaration,whichmightbeusefuliftheapplicationneedsaself-sustainingarrayofobjectswhichisabletoaddandremoveobjectsfromitselfduringrun-time:Filea.h:classA{public:staticA*first,*last;A*previous,*next;A();~A();};Filea.cpp:#include"a.h"A*A::first=0,*A::last=0;//don't

c++ - 指向 C++ 类元素的指针

我有一个C++类c_image,它包含指向c_pixel类元素的指针vector:classc_image{public:vector>pixel;...};c_pixel类元素包含一个double类型的元素Z:classc_pixel{public:doubleZ;...};但是,它们使用c_pixel_pv类进行扩展,其中包含pv,一个包含三个double类型元素的数组:classc_pixel_pv:publicc_pixel{public:doublepv[3];...};类c_image还有一个函数filtervectorc_image::filter(???){...};它

c++ - protected 成员不能通过指针或对象访问

我有2个类Training和Testing,其中Training是基类,Testing是派生类训练类。我有Testing类成员函数,floattotalProb(Training&classProb,Training&total),它有2个参数,都是Training类对象。代码:voidTesting::totalProb(Training&classProb,Training&total){_prob=(_prob*((float)(classProb._nOfClass)/total._tnClass));coutfirst基本上这个函数所做的是计算test1(Testing类的一

c++ - 创建线程并让 "this"指针从构造函数中逃逸总是安全的吗?

我对以下代码感到困惑(来自PreferUsingActiveObjectsInsteadofNakedThreads):classActive{public:classMessage{//baseofallmessagetypespublic:virtual~Message(){}virtualvoidExecute(){}};private://(suppresscopyingifinC++)//privatedataunique_ptrdone;//lesentinelmessage_queue>mq;//lequeueunique_ptrthd;//lethreadprivate

c++ - 共享指针的双重检查锁定

免责声明:我有Java背景,因此,我不知道C++(和相关库)的许多内部机制是如何工作的。我已经阅读了足够多的资料,知道双重检查锁定是邪恶的,正确和安全地实现单例模式需要适当的工具。我认为以下代码可能不安全,受编译器重新排序和未初始化对象分配的影响,但我不确定我是否遗漏了一些我不了解该语言的内容。typedefboost::shared_ptrAPtr;APtrg_a;boost::mutexg_a_mutex;constAPtr&A::instance(){if(!g_a){boost::mutex::scoped_locklock(g_a_mutex);if(!g_a){g_a=bo

c++ - 如何使可变参数模板类方法将函数指针作为从函数模板派生的类型的参数?

抱歉标题有点啰嗦。我正在研究类似于讨论的数组类here.我想定义一个“映射”函数,它采用用户定义的函数并将其应用于数组的每个元素。出于类型检查的目的,我想将其定义为用户指定的函数必须采用与传递给map函数的参数数量相同的参数,以便doublef(doublea,doubleb){returna+b;}Arrayx,y,z;x.map(f,y,z);会编译但是doubleg(doublea,doubleb,doublec){returna+b+c;}Arrayx,y,z;.x.map(g,y,z);不会,因为g根据传递给map函数的内容接受了错误数量的参数。我试过这样的语法:templa

python - 如何将 char 指针从 python 传递给 C++ API?

我正在尝试从我的python代码中调用以下C++方法:TESS_APITessResultRenderer*TESS_CALLTessTextRendererCreate(constchar*outputbase){returnnewTessTextRenderer(outputbase);}我对如何将指针传递给方法有困难:遵循正确的方法吗?textRenderer=self.tesseract.TessTextRendererCreate(ctypes.c_char)或者我应该这样做:outputbase=ctypes.c_char*512textRenderer=self.tess

c++ - 指向 char 数组的整数指针

我正在开发一个应用程序(visualstudio上的C++语言),其中所有字符串都使用整数指针引用。例如,我正在使用的类有一个指向数据的整数指针和一个大小变量。{....unsignedshortint*pData;intiLen}我想知道使用int指针代替char指针有什么优势吗?经过深思熟虑,我怀疑原因可能是为了避免在没有空终止的情况下使用char指针可能发生的应用程序崩溃。但我不是100%确定。在调试过程中,我们如何检查指针的内容,其中内容是字符数组或字符串(在VisualStudio上)。调试时查看内容只能看到地址。因此,我在调试时遇到了困难。使用printf可以显示内容,但我

c++ - 如何在共享指针中为模板类使用前向声明(在 C++ 中)

我有一个基类Base在Base.h中定义:classBase{/*...*/};还有一个类模板Child源自Base,在Child.h中定义:#include"Base.h"templateclassChild:publicBase{/*...*/};现在我想在Base中创建一些工厂方法类,它应该返回一个std::shared_ptr到Child类(class)。为了避免循环依赖,我尝试使用前向声明。所以Base.h现在看起来像这样:classChild;//newforwarddeclarationclassBase{/*...*///newfactorymethodstaticst